Visual designation of a zone in rendered code

ABSTRACT

A method of operating a computing system capable of allocating an advertisement budget of campaign between a plurality of advertisement entities, the method comprising: obtaining by the computer system, for each of the plurality of advertisement entities, a respective optimal target frontier function representing for each given advertising cost an optimal value of return and configured to follow the law of diminishing return; receiving by the computer system a budget constraint for the advertisement budget; generating, by the computer system, a global target frontier function by summing each of the received optimal target frontier functions; processing, by the computer system, the generated global target frontier function to determine for each of the plurality of advertisement entities an optimal, with respect of at least the received budget constrain, advertising cost value such that a sum of the optimal advertising cost values meets the budget constraint; and reporting the determined values.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of U.S. patent applicationSer. No. 14/218,316, filed on Mar. 18, 2014, which claims priority fromIsraeli Patent Application No. 224401, filed on Jan. 24, 2013, entitled“VISUAL DESIGNATION OF A ZONE IN RENDERED CODE”. The contents of theabove applications are all incorporated by reference as if fully setforth herein in their entirety.

FIELD OF THE INVENTION

The invention relates to visual designation of elements in renderedcode.

BACKGROUND

Advertising using traditional media, such as television, radio,newspapers and magazines, is well known. Unfortunately, even when armedwith demographic studies and entirely reasonable assumptions about thetypical audience of various media outlets, advertisers recognize thatmuch of their advertising budget is oftentimes simply wasted. Moreover,it is very difficult to identify and eliminate such waste.

Recently, advertising over more interactive media has become popular.For example, as the number of people using the Internet has exploded,advertisers have come to appreciate media and services offered over theInternet as a potentially powerful way to advertise.

Interactive advertising provides opportunities for advertisers to targettheir advertisements (also “ads”) to a receptive audience. That is,targeted ads are more likely to be useful to end users since the ads maybe relevant to a need inferred from some user activity (e.g., relevantto a user's search query to a search engine, relevant to content in adocument requested by the user, etc.). Query keyword targeting has beenused by search engines to deliver relevant ads. For example, the AdWordsadvertising system by Google Inc. of Mountain View, Calif., delivers adstargeted to keywords from search queries. Similarly, content targeted addelivery systems have been proposed. For example, U.S. Pat. No.7,716,161 to Dean et al. and U.S. Pat. No. 7,136,875 to Anderson et al.describe methods and apparatuses for serving ads relevant to the contentof a document, such as a web page. Content-targeted ad delivery systems,such as the AdSense advertising system by Google for example, have beenused to serve ads on web pages.

AdSense is part of what is often called advertisement syndication, whichallows advertisers to extend their marketing reach by distributingadvertisements to additional partners. For example, third party onlinepublishers can place an advertiser's text or image advertisements on webpages that have content related to the advertisement. This is oftenreferred to as “contextual advertising”. As the users are likelyinterested in the particular content on the publisher web page, they arealso likely to be interested in the product or service featured in theadvertisement. Accordingly, such targeted advertisement placement canhelp drive online customers to the advertiser's website.

Optimal ad placement has become a critical competitive advantage in theInternet advertising business. Consumers are spending an ever-increasingamount of time online, looking for information. The information,provided by Internet content providers, is viewed on a page-by-pagebasis. Each page can contain written and graphical information as wellas one or more ads. Key advantages of the Internet, relative to otherinformation media, are that each page can be customized to fit acustomer profile and ads can contain links to other Internet pages.Thus, ads can be directly targeted at different customer segments. Forexample, ad targeting is nowadays possible based on the geographiclocation of the advertiser and/or the customer, the past navigation pathof the customer outside or within the web site, the language used by thevisitor's web browser, the purchase history on a website, the behavioralintent influenced by the user's action on the site, and more.

Furthermore, the ads themselves are often designed and positioned toform direct connections to well-designed Internet pages. The conceptreferred to as “native advertising” offers ads which more naturallyblend into a page's design, in cases where advertiser's intent is tomake the paid advertising feel less intrusive and, therefore, increasethe likelihood users will click on it.

As with traditional, offline advertising, Internet advertising is alsonot free from problems which cause big chunks of the advertising budgetto go to waste. In the online world, this has commonly been attributed,at least partially, to a phenomena called “advertisement blindness” or“banner blindness”, in which web site visitors, consciously orsubconsciously, simply ignore the displayed web advertisements. Effortshave been made to fight that blindness, by developing more appealingadvertisements, improving the location of the advertisements in thepage, etc. However, it is still considered very difficult to identifyand eliminate such waste.

U.S. Patent Application Publication No. 2004/0260767 to Kedem et al.discloses a web page advertisements playing system for use over theInternet, which has a server to activate java script programs, where oneprogram analyzes technical browsing limitations and web-page structurefor creating instruction sets to play ad. On the advertisement server'sside, the ad composer determines the campaign type and scenario andassigns the respective ad content source location. The ad composer'soperation instruction sets and relevant information of ad content aretransferred to the user's device browser including a calling instructionfor activating the main java script. At the next step, the browser callsthe main java script program, which is active during the browsingsession of the specific web-page and controls the presentation of thecampaign advertisement. The parameters of the instructions forcontrolling the ad presentation can include all physical properties,attributes and display techniques of an object, including and notlimited to size, shape, geographic screen location (upper, lower,upper-left, lower-right, right, left), etc.

U.S. Pat. No. 8,205,167 to Kang et al. discloses an advertisement windowprocessing module which displays the advertisement window for displayingthe advertisement in a certain area (the left, right, top or bottom) ofthe Web browser and/or the file explorer. The advertisement windowprocessing module requests advertisement control data by transmittingthe user code to the advertisement control server and then displays theadvertisement according to the advertisement control data received fromthe advertisement control server in response to the request. Theadvertisement control data may include an advertisement URL address inwhich the advertisement HTML data of the advertiser are stored, thelocation and the size of the advertisement window, and an advertisementdisplay period. The advertisement window processing module stores theadvertisement control data in the local storage, accesses theadvertisement server at the URL address included in the control data,fetches the corresponding advertisement data from the advertisementserver, and then displays the advertisement in the advertisement windowaccording to the location and size specified in the control data.

U.S. Pat. No. 8,005,717 to Joo discloses an internet advertising systemincluding terminals connected to a Web server through the Internet torelay communication of clients. The advertising system includes alocation search module for searching a Web page to be displayed on theterminals for the location into which new advertising content is to beinserted, an identification module for identifying the size andcoordinates of a corresponding location found by the location searchmodule, an advertising content database (DB) for storing new advertisingcontent and an editing module for analyzing the size and coordinates ofthe location obtained by the identification module, searching theadvertising content DB for new advertising content corresponding to theanalyzed location size and coordinates, and inserting the found newadvertising content into the Web page to be displayed.

U.S. Patent Application Publication No. 2008/0319850 to Shaul et al.discloses a method for managing website advertising space. Prior toselecting a desired advertisement to be displayed, the host siteadministrator defines one or more advertising spaces of the host site,in which an advertisement is to be displayed, including theircharacteristics, such as demographic, geographic and psychographiccharacteristics of typical users that interact with the host site, thenature of information displayed on the host site, the relative locationwithin a web page at which the advertisement is to be displayed, and thesize of the advertising space. The host site administrator receives fromthe service provider a unique executable code, which is interfaceablewith the service provider server, for each advertising space that isdefined, e.g. a Common Gateway Interface (CGI) program, and embeds eachof the unique executable codes within the source code of a HyperTextMarkup Language (HTML) page of the host site. Each embedded executablecode, when initiated, is able to transmit data which identifies a givenadvertising space to the service provider server.

The foregoing examples of the related art and limitations relatedtherewith are intended to be illustrative and not exclusive. Otherlimitations of the related art will become apparent to those of skill inthe art upon a reading of the specification and a study of the figures.

SUMMARY

The following embodiments and aspects thereof are described andillustrated in conjunction with systems, tools and methods which aremeant to be exemplary and illustrative, not limiting in scope.

There is provided, in accordance with an embodiment, a method forvisually designating advertising space in a web page, the methodcomprising using at least one hardware processor for: retrieving aDocument Object Model (DOM) of a web page displayed in a web browser;detecting a user selection, made using an input device, of a graphicalobject in a graphical view of the displayed web page; translating thegraphical object in the graphical view to a DOM object in the DOM;updating the DOM with an advertisement placeholder associated with theDOM object, and causing the web browser to display the web page with theadvertisement placeholder; and composing instructions for a firstclient-side script for injecting an advertisement associated with theDOM object upon a visitor visiting the web page.

There is further provided, in accordance with an embodiment, a methodfor visually designating advertising space in a web page, the methodcomprising using at least one hardware processor for: retrieving aDocument Object Model (DOM) of a web page displayed in a web browser;detecting a signature in a source code of the web page, the signaturebeing indicative of a type of a web site to which the web page belongs;based on the type of web site, displaying one or more options for anadvertising positioning layout, and receiving from the user a selectionof one of said one or more options; translating the selected one of saidone or more options to one or more advertising positions in the DOM; andupdating the DOM, based on the selected one of said one or more options,with at least one advertisement placeholder, and causing the web browserto display the web page with the at least one advertisement placeholder.

There is also provided, in an embodiment, a method of operating acomputing system capable of allocating an advertisement budget of anadvertisement campaign between a plurality of advertisement entities,the method comprising: obtaining by the computer system, for each of theplurality of advertisement entities, a respective optimal targetfrontier function representing for each given advertising cost anoptimal value of return and configured to follow the law of diminishingreturn; receiving by the computer system a budget constraint for theadvertisement budget; generating, by the computer system, a globaltarget frontier function by summing each of the received optimal targetfrontier functions; processing, by the computer system, the generatedglobal target frontier function to determine for each of the pluralityof advertisement entities an optimal, with respect of at least thereceived budget constrain, advertising cost value such that a sum of theoptimal advertising cost values meets the budget constraint; andreporting the determined values.

In some embodiments, said retrieving is from the web browser.

In some embodiments, said retrieving, said detecting, said translatingand said updating are performed by executing, in the web browser, asecond client-side script.

In some embodiments, said retrieving, said detecting, said translatingand said updating are performed by executing, in the web browser, thefirst client-side script.

In some embodiments, said first client-side script is written inJavaScript.

In some embodiments, said executing of the second client-side scriptcomprises retrieving the second client-side script from a bookmarklet.

In some embodiments, said executing of the first client-side scriptcomprises retrieving the first client-side script from a bookmarklet.

In some embodiments, said executing of the second client-side scriptcomprises retrieving the second client-side script from a remote serverlinked to by a bookmarklet.

In some embodiments, said executing of the first client-side scriptcomprises retrieving the first client-side script from a remote serverlinked to by a bookmarklet.

In some embodiments, said executing of the second client-side scriptcomprises operating an add-on of the web browser, the add-on comprisingthe second client-side script.

In some embodiments, said executing of the first client-side scriptcomprises operating an add-on of the web browser, the add-on comprisingthe first client-side script.

In some embodiments, said executing of the second client-side scriptcomprises operating an add-on of the web browser, to retrieve the secondclient-side script from a remote server linked to by the add-on.

In some embodiments, said executing of the first client-side scriptcomprises operating an add-on of the web browser, to retrieve the firstclient-side script from a remote server linked to by the add-on.

In some embodiments, the second client-side script is embedded in theweb page, and comprises instructions for triggering said executingresponsive to a determination of the user being an administrator of theweb page.

In some embodiments, the first client-side script is embedded in the webpage, and comprises instructions for triggering said executingresponsive to a determination of the user being an administrator of theweb page.

In some embodiments, a command to call the second client-side scriptfrom a remote server is embedded in the web page.

In some embodiments, a command to call the first client-side script froma remote server is embedded in the web page, and wherein the firstclient-side script comprises instructions for triggering said executingresponsive to a determination of the user being an administrator of theweb page.

In some embodiments, said determination comprises identifying anadministrator cookie stored in a cookie depository of the web browser.

In some embodiments, said determination comprises identifying a UniformResource Locator (URL) parameter entered by the administrator in anaddress bar of the web browser.

In some embodiments, the method further comprises guiding the user toperform the selection by providing the advertisement placeholder to bedragged and dropped onto the location in the graphical view of thedisplayed web page; and updating the DOM and the graphical view of thedisplayed web page on the fly, to display the advertisement placeholderin the location.

In some embodiments, the method further comprises receiving from theuser one or more parameters pertaining to the advertisement, said one ormore parameters selected from the group consisting of: an advertisementsize, an advertisement style, an advertising content, indication ofwhich pages of a web site the advertisement is to be displayed in and anadvertisement position relative to an element of the DOM.

In some embodiments, the method further comprises displaying anadvertisement parameter interface for enabling the user to define theone or more parameters pertaining to the advertisement.

In some embodiments, the advertisement parameter interface is displayedadjacent the selected location.

In some embodiments, the method further comprises transmitting the firstclient-side script to a remote server, and providing the user with acode snippet for embedding in the web page, wherein the code snippetcomprises a call to the first client-side script from the remote server.

In some embodiments, the method further comprises transmitting the firstclient-side script to a remote server, wherein the first client-sidescript comprises a call to the second client-side script from the remoteserver.

In some embodiments, the instructions for injecting the advertisementassociated with the DOM object are configured to cause the advertisementto be displayed in a location adjacent to the graphical object uponvisitor interaction with the graphical object.

In some embodiments, the instructions for injecting the advertisementassociated with the DOM object are configured to cause the advertisementto be displayed in a fixed location relative to the graphical view ofthe displayed web page, upon visitor interaction with the graphicalobject.

In some embodiments, the advertisement associated with the DOM object isan advertisement inside the DOM object, and wherein the instructions forinjecting the advertisement are configured to invoke a display of theadvertisement upon a visitor viewing the web page.

In some embodiments, the method further comprises composing instructionsfor a first client-side script for injecting an advertisement in each ofthe at least one advertising position.

In some embodiments, the type of the web site further comprises atemplate structure used in the CMS.

In some embodiments, the type of the web site comprises a type of a website plugin used for the web site.

In addition to the exemplary aspects and embodiments described above,further aspects and embodiments will become apparent by reference to thefigures and by study of the following detailed description.

BRIEF DESCRIPTION OF THE FIGURES

Exemplary embodiments are illustrated in referenced figures. Dimensionsof components and features shown in the figures are generally chosen forconvenience and clarity of presentation and are not necessarily shown toscale. The figures are listed below.

FIG. 1 shows a flow chart of a computer-based method for visuallydesignating advertising space in a web page; and

FIGS. 2A, 2B, 2C, 2D and 2E each shows an exemplary GUI for visuallydesignating advertising space in a web page.

DETAILED DESCRIPTION Glossary

-   -   As referred to herein, the term “web page” may refer to a        document whose source code is typically written in plain text        interspersed with formatting instructions of Hypertext Markup        Language (HTML, XHTML) and optionally Cascade Style Sheets        (CSS), which web page contains content such as text, images,        video, audio, hyperlinks, etc.    -   As referred to herein, the term “web site” may refer to a set of        related web pages. A web site is hosted on at least one web        server, accessible via a network, such as the Internet or a        private local area network, through an Internet address known as        a Uniform Resource Locator (URL). Web pages of a web site are        usually requested and served from a web server using Hypertext        Transfer Protocol (HTTP). All publicly accessible websites        collectively constitute what is referred to as the World Wide        Web. A “static” web site is one that has web pages stored on the        server in the same format that is sent to a client web browser.        In a “dynamic” web site, on the other hand, the code of the web        pages is constructed dynamically, on the fly, using active        programming language instead of plain, static HTML. Content        management systems (CMSs) are software products used for        creating and managing dynamic websites. Common CMSs today        include Joomla, Drupal, WordPress, DotNetNuke, Django, phpWiki        and others.    -   As referred to herein, the term “graphical view of a web page”        may refer to a graphic, rendered representation of a web site's        source code. The source code is typically interpreted, rendered        and presented by a web browser. The graphical view of the web        page commonly shows the text, images, video, audio, hyperlinks        and/or any other elements of the web page.    -   As referred to herein, the term “web browser” may refer to a        software application for retrieving, interpreting, rendering and        presenting information resources from the World Wide Web or        local servers. A web browser enables users to access and view        documents and other resources on the Internet. Some of the major        web browsers today are Google Chrome, Mozilla Firefox, Microsoft        Internet Explorer, Opera, and Apple Safari.    -   As referred to herein, the term “JavaScript” may refer to the        scripting language commonly implemented as part of web browsers        in order to create enhanced user interfaces and/or dynamic        websites. JavaScript was formalized in the ECMAScript language        standard and is primarily used in the form of client-side        JavaScript, namely—as part of a web browser. See Ecma        International, Standard ECMA-262: ECMAScript Language        Specification, Edition 5.1 (June 2011), available at        http://www.ecma-international.org/publications/standards/Ecma-262.htm;        and International Organization for Standardization, Standard        ISO/IEC 16262:2011: ECMAScript language specification, available        at        http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=55755.        These two standards are incorporated herein by reference in        their entirety.    -   As referred to herein, the term “web site plugin” may refer to a        server-side or client-side script component that adds specific        abilities to an existing web site or web page. Examples include        a Facebook comment box, a social bookrnarking button, an        automatically-created gallery, a forum engine, a Lightbox-style        plugin and/or the like. Lightbox is an unobtrusive script        developed by Lokesh Dhakar, used to overlay images on a web page

A computer-based method for visual designation of placeholders (also“zones”) in rendered code is disclosed herein. The method may be used,for example, for visually designating advertising space in a web page.The method may also be used to designate a graphical element in a webpage to trigger a hidden advertisement upon user interaction with thegraphical element, causing the advertisement to be revealed.Advantageously, the method enables a web page administrator (alsoreferred to as a “publisher”) who wishes to monetize his or her webpage, to designate one or more advertising positions and/or graphicalelements (also “objects”) to trigger an advertisement in the web page byusing a user-friendly GUI (graphic user interface). This GUI reduces toa minimum, or even eliminates, the need of the administrator to manuallyaccess the source code of the web page in order to implant code snippetsin it.

In some embodiments, the present disclosure further provides for amethod for allocation of an advertisement budget of an advertisementcampaign between a plurality of advertisement entities. The methodcomprises receiving for each of the plurality of advertisement entitiesa corresponding optimal value of its target frontier function respectiveof an advertising cost; receiving at least a budget constraint for theadvertisement budget; creating a global target frontier function that isa sum of each of the target frontier functions of each of the pluralityof advertisement entities, each of the target frontier function ismultiplied by a binary inclusion variable; optimizing the global targetfrontier function to determine a marginal equilibrium, whereindetermination of the marginal equilibrium results in an advertising costvalue for each of the plurality of advertisement entities and a value ofthe binary inclusion variable for each of the target frontier functions,wherein a sum of the advertising cost values determined for each of theplurality of advertisement entities meets the budget constraint; andreporting the determined values.

As a result of the present method, computing resources at the serverside, as well as network bandwidth between the server and the client (ofa web page visitor) may be saved. That is, the source code of the webpage need not contain, when stored on the server, a separate codesnippet in each location an ad is desired. Instead, the source code ofthe web page includes only a single, relatively short code snippet,which is used, at the client side, for injecting ads into desiredlocations on the fly. This injecting utilizes the computing resources,such as CPU, of the client computer.

As another example, the method may be used to visually designate spacefor virtually any content element, such as an image, a video, textand/or the like—not necessarily advertising-related. The webmaster mayeven be able to define custom HTML code and/or scripting code to beplaced in each designated advertisement placeholder.

An advertisement may include, for example, a rectangular banner or abanner having any other shape, containing information such as text,image(s), video(s) or any combination thereof. In addition, anadvertisement may be what is often referred to as an “interstitial ad”displayed before/after the visitor is shown a specific web page orbefore/after a specific user-triggered action (such as a file download,navigating away from a web page, submitting a form, etc.) is completed.The advertisement may either be overlaid on the web page the user iscurrently viewing, and/or on the page the user has been transferred to.

To create an interstitial placement, according to some embodiments, theadministrator may select the DOM element that will trigger theinterstitial ad by clicking on the element in the graphical view of theweb page. Such element may be, for example, a hyperlink (e.g. one thatleads to another page or link to a downloadable file), a button, animage, a video, a form element and/or other element visible to the user.Once the selection of the element is made, an advertisement placeholderoptionally appears as an overlay element (often called “DIV overlay” or“Modal Dialog”) on the page, by altering the existing page's DOM. Theuser may then choose one or more parameters relating to the placementvisualization (e.g. size, color, position) and functionality (e.g., adda “skip” button/link to the placement and/or set a timer countdown afterwhich the user requested action will be completed) and/or parametersrelating to the triggering of the placement (e.g. the trigger event suchas click or mouse-over, delay between the triggering event and theactual appearance of the ad). The triggering element information and theplacement parameters are saved and converted to an instructionsclient-side script that will be injected to the page and later executedto create the placement upon visitor triggering. The instructions mayalso be a set of parameters which will later be interpreted by a scriptalready embedded in the web page, to inject the advertisement to thepage, with or without visitor triggering.

For reasons of simplicity, the following discussions refer to“advertisements” as the elements to be positioned in the placeholders.However, it is intended that the term “advertisement” and any variationsthereof be representative of any other content element, as discussedabove, which may be placed in a visually-designated placeholder.

According to some embodiments, the GUI is executed and displayed withinthe framework of a web browser, utilizing code written in a client-sidescripting language such as JavaScript and/or the like. The code forexecuting the GUI may be provided in one or a number of ways, such as:

-   -   the code may be embedded in the source code of the web page;    -   the code may be stored locally, on the client computer, as a        bookmarklet (code stored in the URL parameter [HREF] of a        hyperlink, often implemented as a bookmark containing JavaScript        code) of the web browser; and    -   the code may be stored locally, on the client computer, as part        of a browser add-on (also referred to as an “extension” or a        “plug-in”).

As an alternative to these three options, the code may be stored on aremote server, and a call to this remotely-stored code may be includedin the source code of the web page, the bookmarklet or the browseradd-on, respectively.

The GUI created by the code may assume, for example, one or more of thefollowing shapes:

-   -   a “drag-and-drop” interface, in which the user is provided with        one or more dummy advertisements (also referred to as        “advertisement placeholders”), such as rectangular banners        and/or the like, which he or she may drag, using a pointing        device such as a mouse, to a desired location in the graphic        view of the web page; and    -   an interface wherein the user may click, using the pointing        device, on a desired location for an advertisement. Responsive        to this click, an interface, such as a window overlaid on the        graphic view of the web page, may be displayed, which interface        includes a form enabling manual entry of one or more        advertisement parameters. These may include, for example, an        advertisement size, an advertisement style, an advertisement        position relative to an element of the DOM, and/or an event to        invoke advertisement display. Alternatively, the interface may        already be visible prior to clicking on the desired location,        and be populated with default parameters which are changeable by        the user after performing the click on the desired advertisement        location. Upon clicking on the desired location, an        advertisement placeholder may appear in close proximity to the        location. The advertisement placeholder reflects, automatically        and immediately, any changes the user makes to the advertising        parameters.    -   an interface wherein the user may click, using the pointing        device, on a desired trigger for an advertisement. The term        “trigger” refers to a DOM object (or “element”) which is        intended to trigger an advertisement to appear in a different        location, responsive to a visitor acting upon the trigger. For        example, the trigger may be a text field, which, upon the        visitor making it in focus (clicking on it, starting to type in        it, etc.), may cause an advertisement in form of a tooltip or a        Modal Dialog to appear nearby. Referring now back to the        designation of the trigger, responsive to the user's click on        the desired trigger, an interface, such as a window overlaid on        the graphic view of the web page, may be displayed, which        interface includes a form enabling manual entry of one or more        advertisement parameters. These may include, for example, an        advertisement size, an advertisement style, an advertisement        position relative to an element of the DOM, and/or an event to        invoke advertisement display. Alternatively, the interface may        already be visible prior to clicking on the desired DOM element,        and be populated with default parameters which are changeable by        the user after performing the click on the desired DOM element.    -   an interface allowing the user to select a pre-arranged        advertisement layout out of multiple possibilities based on the        web site type or web site plugins currently embedded in the        site. This type of interface may be suitable, for example, for        dynamic web sites, such as those based upon a CMS.

While designating the ad placement in the GUI, the user may decide inwhich pages of the web site the ad placement should be injected (asidefor the current page loaded), in order to save time and create oneplacement that fits many pages (without creating one for each pageseparately) or to exclude certain pages (like a specific section,category and/or subdomain) from showing the ad placement. Specifyingwhat pages to include or exclude can may done in multiple ways, such as:

-   -   Searching for an exact text pattern in the URL (egg, all pages        that begin/contain/end with “news”, such page can be        http://www.exmaple.com/news/page1.html). URLs that “begin” with        certain text, are checked when using the domain as a        base/predefined URL.    -   Using negative matching (all the URLs which do not        begin/contain/end with “news”).    -   Providing multiple matching condition, such as AND/OR        conditions, to create a set of requirements for URL matching,        whether positive or negative. Another option is using regular        expressions in order to match URL patterns.    -   The user may state that the ad should be loaded for every URL in        the site, whenever possible, or just for the current page.    -   It is also possible to limit the loading of the ad according to        certain text/code that is found within the page. For example,        only load an ad placement on pages where the text “copyright”        exists or where the tag <td id=“blabla”> exists.

Following the designation of the one or more advertising positions inthe web page by the publisher, information on the designation may betransmitted to a remote server which processes the information andcomposes a client-side script, optionally also in JavaScript. Thisclient-side script may then be used for invoking one or moreadvertisements in the one or more advertising positions, respectively,when a visitor visits the web page. This client-side script optionallyremains stored in the remote server, and is called by the GUI codealready embedded in the source code of the web page. Alternatively, theclient-side script is provided to the publisher as a code snippet, andthe publisher may manually embed it in the source code of the web page.Albeit manual embedding of code is needed in this scenario, it stilloffers enhanced convenience to the publisher, since a single codesnippet is able to invoke multiple advertisements in multiple positionsin the web page, and there is no need to manually implant a separatecode snippet in every location where an advertisement is desired. Theinformation on the designation may be transmitted to a remote serverwhich processes the information and composes a set of parameters whichrepresent different aspects of the advertisement. These parameters maybe called by a code already installed in the source code of the page andbe processed by the code that is designed to interpreting the parametersand inject an advertisement to the page with the given parameters.

Reference is now made to FIG. 1, which shows a flow chart of acomputer-based method 100 for visually designating advertising space ina web page. Method 100 relates, merely for reasons of simplicity, to asingle web page. However, method 100 may be employed, in a similarmanner which will be apparent to those of skill in the art, on a wholewebsite. For example, method 100 may be used for designating advertisingspace in a dynamic website, by defining where advertisement are to bedisplayed in different types of web pages created dynamically by thewebsite.

In a step 102, a client-side script (or “script” for short), written,for example, in the JavaScript language, is executed within a webbrowser running on a client computer of the publisher. The script isexecuted when a user of the client computer utilizes the web browser foraccessing a web page.

The script may be provided to the web browser, for example:

-   -   by a previous embedding of the script in the source code of the        web page;    -   by retrieving the script from a bookmarklet, whether in the form        of a hyperlink appearing in a web page or stored in local        storage, on the client computer; and/or    -   by retrieving the script from a local storage, on the client        computer, as part of a web browser add-on.

As an alternative to these three options, as discussed, the script maybe stored on a remote server accessible through the Internet, and a callto this remotely-stored script may be included in the source code of theweb page, the bookmarklet or the add-on, respectively. As oneillustrative example, the source code of the web page may include acommand for the web browser to load a remotely-stored script, byreference to the URL of the script.

The script includes instructions to the web browser on how to create andoperate the GUI discussed above. However, before the script creates theGUI and makes it usable to the user, an optional step 104 may takeplace.

In optional step 104, instructions in the script determine whether theuser who is presently visiting the web page is the publisher or a casualvisitor. If the user is a casual visitor, method 100 terminates. If,however, the user is determined to be the publisher, method 100continues. The determination may be performed, for example, by:

-   -   an instruction in the script to identify a specific cookie (also        referred to as an “administrator cookie”) stored in a cookie        depository of the web browser. This cookie was previously stored        in the depository upon manual authentication of the publisher's        identity. If the cookie is not present, the user is optionally        requested to manually authenticate, such as by entering a        username and a password;    -   based on a certain IP address, which can be retrieved if the        publisher has a static IP or if the IP of the publisher is        recognized in an earlier step;    -   based on recognizing a URL parameter entered by the publisher as        part of the present page's URL and only known to him or        her—serving as a type of a password;    -   checking for a certain HTTP referrer (such of that of a parent        window, frame or a previous web page or web site);    -   checking a combination of a browser-provided variable which        creates a “digital fingerprint” if combined (for example,        resolution+OS+browser version+color-depth+etc. . . . ).

In a step 106, the script retrieved a Document Object Model (DOM) of theweb page from the web browser. The web browser accesses the source codeof the web page, which is typically written in HTML, and analyzes thetag structure in the source code to establish the DOM of the web page.The retrieval of and access to the DOM of the web page, in someembodiments, is what makes it possible to later inject advertisements indifferent locations in the DOM, and consequently in the web page. Accessto and interaction with the DOM is possible, for example, usingJavaScript, JQuery, Xpath, CSS selectors, MOXy, JAXB, The Simple XMLserialization and configuration framework, Apache Digester, etc.

In a step 108, the script causes the web browser to create the GUI.

Interim reference is now made to FIGS. 2A, 2B, 2C, 2D and 2E, which showfive exemplary GUIs, 200, 230, 260, 280 and 290, respectively. GUI 200demonstrates a “drag-and-drop” mode of operation, in which both a webpage 202 and a gallery 204 of advertisement placeholders 204 a-d aredisplayed in a web browser 206. Gallery 204 is created by the script.The user may, using a pointing device of the computer, a touch screen orthe like, drag an advertisement placeholder, such as placeholder 204 c,to a desired position in web page 202, such as between a search box 208and a side menu 210 a. The script then updates the DOM of web page 202on the fly, and pushes side menu 210 a to a new location 210 b to clearspace of placeholder 204 c.

GUI 230 is a demonstration of an interface wherein the user may click,using the pointing device, on a desired location for an advertisement.GUI 230 shows a web page 232 inside a web browser 236. Upon the userclicking on a desired location, such as location 242, a window(hereinafter an “advertisement parameter interface”) 244 overlaid on thegraphic view of the web page, may be displayed. Advertisement parameterinterface 244 may display a form of and allow the user choose from oneor more parameters, such as: an advertisement size, an advertisementstyle, an advertisement position relative to an element of the DOM, anevent to invoke advertisement display, etc. Once the user finishesentering the parameters, optionally, an advertisement placeholder (notshown) may be displayed in location 242, having the look according toone or more of the parameters entered. To this end, one or more objectsof the DOM of web page 232, such as a side menu 240 a, may be pushed toa different location 240 b to clear space for the advertisementplaceholder.

GUI 260 is a demonstration of an interface wherein the user may selectone or more pre-arranged advertisement layouts, and the scriptautomatically displays advertisement placeholders according to thelayout. GUI 260 is suitable, for example, for dynamic web sites, such asthose based upon a CMS. To this end, the script may include instructionsfor attempting to recognize whether a web page 262 is part of a certainCMS, and for identifying the CMS. This may be performed, during theanalysis of the web pages source code, by searching for “signatures” ofknown CMSs, in the form of text strings identifying the CMS or known tobe associated with a specific CMS.

Knowledge about the identity of the pertinent CMS enables the presentmethod to tailor certain pre-arranged advertisement positions to theCMS. For example, in the WordPress CMS, which is mainly aimed at blogs,the pre-arranged advertisement positions may be tailored to certainpositions in dynamic page types of WordPress such as “posts” and“pages”. Each such dynamic page type is typically created by aserver-side script which dictates the page's structure. The presentmethod may therefore analyze the DOM resultant from such server-sidescript, and produce a client-side script capable of injectingadvertisements into specified positions in the dynamic page.

GUI 260 may also be suitable for web sites which incorporate popularvisual components and/or web site plugins that are built withJavaScript, server side scripts and/or the like. Examples include aFacebook comment box, social bookmarking buttons, anautomatically-created gallery, a forum engine, a Lightbox-style pluginand/or the like. These components add specific functionalities tosupplement the web page and can be usually added regardless of awebsite's CMS, and even to static web pages. Each of these componentsusually leaves a unique “signature” in the web page code, such as textstings and/or unique HTML tags/attributes. When analyzing a web page'ssource code, signatures of these components may be easily identified,and thus, injecting an ad placement tailored to each of thesecomponents' unique functionality and layout is possible withoutrequiring the publisher to manually try to figure out how to place an adin or based to the component or the interaction of a visitor with acomponent.

Back to the figure, GUI 260 shows web page 262 inside a web browser 266.Alongside web page 262, a menu 264 of pre-arranged ad positions isdisplayed using the script of step 102 (FIG. 1). For example, if theuser selects the option “above side menu”, an advertisement placeholder(not shown) may be displayed between a search box 268 and a side menu270 a, pushing the side menu to a new location 270 b further down.Similarly, if the user selects “below main photo”, an advertisementplaceholder (not shown) may be displayed below a main photo 272.

GUI 280 shows a web page 282 inside a web browser 286. In this GUI, asearch box 288 is defined as a trigger for displaying an ad in adifferent place, such as a tooltip ad 284 displayed adjacent to thetrigger. Tooltip ad 284, or any other type of triggered by a certaindefined trigger, may be superimposed on (or “overlying”) other elementsof the web page, such as a side menu 289, and does not cause existingDOM elements to rearrange to make space for the advertisement.

Finally, GUI 290 shows a web page 292 inside a web browser 296. In thisGUI, clicking on a search button 298 or otherwise submitting the search,triggers an interstitial ad 292 which is superimposed on the web page.Similarly, any elements on web page 292 may serve as a trigger fordisplaying an interstitial ad, such as ad 292.

Reference is made back to FIG. 1. In a step 110, the web browser, basedon instructions in the script, detects the user actions in the GUI, suchas the user's selection of one or more locations in a graphical view ofthe displayed web page, where one or more ads, respectively, are to bedisplayed, or a selection of a trigger for an ad. The detection mayinclude detecting physical user input, such as mouse clicks, keyboardstrokes and/or the like. Optionally, in this step, the web browser,based on instruction in the script, updates the DOM on the fly, andrenders the web page in real time, to display the web page with thelatest user selection(s) and may also display an advertising placeholderassociated with the selection.

Then, in a step 112, the web browser, based on instruction in thescript, designates and records one or more advertising positions in theDOM, based on the user selection in the previous step. This step,essentially, translates the user's selection into its DOM equivalent.

Finally, in a step 114, the one or more recorded advertising positionsin the DOM are translated into instructions for a newly-composedclient-side script or for adding to or providing a set of variables foran existing client-side script, wherein the script is for injecting oneor more advertisements in the one or more advertising positions,respectively. Step 114 may either be performed by the web browseritself, or by the remote server which receives the recorded one or moreadvertising positions from the web browser.

Unless specifically stated otherwise, as apparent from presentdiscussions, it is appreciated that throughout the specificationdiscussions utilizing terms such as “processing”, “computing”,“calculating”, “determining”, or the like, refer to the action and/orprocess of a computing system or a similar electronic computing device,that manipulate and/or transform data represented as physical, such aselectronic, quantities within the computing system's registers and/ormemories into other data similarly represented as physical quantitieswithin the computing system's memories, registers or other such.

Some embodiments may be implemented, for example, using a non-transitorycomputer-readable medium or article which may store an instruction or aset of instructions that, if executed by a computer (for example, by ahardware processor and/or by any other suitable machine), cause thecomputer to perform a method and/or operations in accordance withembodiments of the invention. The computer-readable medium or articlemay include, for example, any type of disk including floppy disks,optical disks, CD-ROMs, magnetic-optical disks, flash memories (such assolid-state drives), read-only memories (ROMs), random access memories(RAMs) electrically programmable read-only memories (EPROMs),electrically erasable and programmable read only memories (EEPROMs),magnetic or optical cards, or any other type of media suitable forstoring electronic instructions, and capable of being coupled to acomputer system bus.

The instructions may include any suitable type of code, for example,source code, compiled code, interpreted code, executable code, staticcode, dynamic code, array of parameters or the like, and may beimplemented using any suitable high-level, low-level, object-oriented,visual, compiled and/or interpreted programming language and/orscripting language, such as C, C #, Java, Javascript, ECMAScript, PHP,ASP, Ruby on Rails, Perl, machine code, or the like.

In the description and claims of the application, each of the words“comprise” “include” and “have”, and forms thereof, are not necessarilylimited to members in a list with which the words may be associated. Inaddition, where there are inconsistencies between this application andany document incorporated by reference, it is hereby intended that thepresent application controls.

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object-oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a hardware processor of a general-purpose computer,special purpose computer, or other programmable data processingapparatus to produce a machine, such that the instructions, whichexecute via the processor of the computer or other programmable dataprocessing apparatus, create means for implementing the functions/actsspecified in the flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowcharts and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

In the description and claims of the application, each of the words“comprise” “include” and “have”, and forms thereof, are not necessarilylimited to members in a list with which the words may be associated. Inaddition, where there are inconsistencies between this application andany document incorporated by reference, it is hereby intended that thepresent application controls.

What is claimed is:
 1. A method of operating a computing system capableof allocating an advertisement budget of an advertisement campaignbetween a plurality of advertisement entities, the method comprising:obtaining by the computer system, for each of the plurality ofadvertisement entities, a respective optimal target frontier functionrepresenting for each given advertising cost an optimal value of returnand configured to follow the law of diminishing return; receiving by thecomputer system a budget constraint for the advertisement budget;generating, by the computer system, a global target frontier function bysumming each of the received optimal target frontier functions;processing, by the computer system, the generated global target frontierfunction to determine for each of the plurality of advertisemententities an optimal, with respect of at least the received budgetconstrain, advertising cost value such that a sum of the optimaladvertising cost values meets the budget constraint; and reporting thedetermined values.